package com.buercorp.wangyu.core1.ch12.threads;

import java.util.*;
import java.util.concurrent.CopyOnWriteArrayList;

/**
 * 在并发下 ArrayList 不安全 以及解决方法
 * 1.List<String> list = new Vector<>() 底层 synchronized
 * 2.List<String> list = Collections.synchronizedList(new ArrayList<>());
 * 3.List<String> list = new CopyOnWriteArrayList<>();
 * @author liyiyu
 */
public class ThreadTest14 {
    public static void main(String[] args) {
//        List<String> list = new ArrayList<>();
//        List<String> list = new Vector<>();
//        List<String> list = Collections.synchronizedList(new ArrayList<>());
        List<String> list = new CopyOnWriteArrayList<>();
        // 10个线程向该列表中添加随机生成的字符串。
        // 每个线程都使用UUID类生成一个随机字符串，并将其添加到列表中
        // String.valueOf(i) 把一个整数转化为字符串，作为新线程的名称
        for (int i = 1; i <= 10; i++) {
            new Thread(() ->{
                list.add(UUID.randomUUID().toString().substring(0,5));
                System.out.println(list);
            },String.valueOf(i)).start();

        }
    }
}
